package com.mesystem.dao.impl;

import java.util.List;

import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

import com.mesystem.dao.RegistroDAO;
import com.mesystem.dao.mapper.RegistroMapper;
import com.mesystem.dto.RegistroDTO;

public class RegistroDaoImpl extends SimpleJdbcDaoSupport implements RegistroDAO{
	
	private static String SQL;
	
	public List<RegistroDTO> listarRegistros(int idUsuario, String anio, String mes) throws Exception {
		SQL = "select * from tb_registro where anio=:anio and mes=:mes and id_usuario=:idusuario and activo='1'";
		MapSqlParameterSource parameterInput = new MapSqlParameterSource();
		parameterInput.addValue("anio", anio);
		parameterInput.addValue("mes", mes);
		parameterInput.addValue("idusuario", idUsuario);
		
		return getSimpleJdbcTemplate().query(SQL, new RegistroMapper(), parameterInput);
	}

	public int buscarCantRegistrosxFecha(RegistroDTO objRegistro)
			throws Exception {
		SQL = "select count(1) from tb_registro where anio=:anio and mes=:mes and dia=:dia and id_usuario=:idusuario and activo='1'";
		MapSqlParameterSource parameterInput = new MapSqlParameterSource();
		parameterInput.addValue("anio", objRegistro.getAnio());
		parameterInput.addValue("mes", objRegistro.getMes());
		parameterInput.addValue("dia", objRegistro.getDia());
		parameterInput.addValue("idusuario", objRegistro.getIdUsuario());
		
		return getSimpleJdbcTemplate().queryForInt(SQL, parameterInput);
	}

	public void insertaRegistro(RegistroDTO objRegistro) throws Exception {
		SQL = "insert into tb_registro(anio,mes,dia,horas,revistas,revisitas,folletos,id_usuario) " +
				"values(:anio,:mes,:dia,:horas,:revistas,:revisitas,:folletos,:idusuario)";
		MapSqlParameterSource parameterInput = new MapSqlParameterSource();
		parameterInput.addValue("anio", objRegistro.getAnio());
		parameterInput.addValue("mes", objRegistro.getMes());
		parameterInput.addValue("dia", objRegistro.getDia());
		parameterInput.addValue("horas", objRegistro.getHoras());
		parameterInput.addValue("revistas", objRegistro.getRevistas());
		parameterInput.addValue("revisitas", objRegistro.getRevisitas());
		parameterInput.addValue("folletos", objRegistro.getFolletos());
		parameterInput.addValue("idusuario", objRegistro.getIdUsuario());
		
		getSimpleJdbcTemplate().update(SQL, parameterInput);
	}

	public void actualizaRegistro(RegistroDTO objRegistro) throws Exception {
		SQL = "update tb_registro set horas=:horas,revistas=:revistas,revisitas=:revisitas,folletos=:folletos " +
				"where id=:id";
		MapSqlParameterSource parameterInput = new MapSqlParameterSource();
		parameterInput.addValue("horas", objRegistro.getHoras());
		parameterInput.addValue("revistas", objRegistro.getRevistas());
		parameterInput.addValue("revisitas", objRegistro.getRevisitas());
		parameterInput.addValue("folletos", objRegistro.getFolletos());
		parameterInput.addValue("id", objRegistro.getId());
		
		getSimpleJdbcTemplate().update(SQL, parameterInput);	
	}

	public void eliminarRegistro(int idRegistro) throws Exception {
		SQL = "update tb_registro set activo='0' where id=:id";
		MapSqlParameterSource parameterInput = new MapSqlParameterSource();
		parameterInput.addValue("id", idRegistro);
		
		getSimpleJdbcTemplate().update(SQL, parameterInput);
	}

}
